//------------------------------------------------------------------------------ 
//      Copyright (c) 2004-2009, Be Nanashi-San 
// 
//      Permission is hereby granted, free of charge, to any person obtaining a 
//      copy of this software and associated documentation files (the "Software"), 
//      to deal in the Software without restriction, including without limitation 
//      the rights to use, copy, modify, merge, publish, distribute, sublicense, 
//      and/or sell copies of the Software, and to permit persons to whom the 
//      Software is furnished to do so, subject to the following conditions: 
// 
//      The above copyright notice and this permission notice shall be included in 
//      all copies or substantial portions of the Software. 
// 
//      THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
//      IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
//      FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
//      AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
//      LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
//      FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
//      DEALINGS IN THE SOFTWARE. 
// 
//      File Name:   BBSHandler.h
//      Author:      Be Nanashi-San 
//      Description:  
//------------------------------------------------------------------------------
//2005.12.20:名称変更
#ifndef BBSHANDLER_H_INCLUDED
#define BBSHANDLER_H_INCLUDED

#include <DataIO.h>
#include <String.h>
//#include "PrefView.h"


class BoardListView;
class BoardOutLineListView;
class BoardItem;
class BMessage;

class BBSHandler 
{
public:
	BBSHandler(const char *BBSname);
	virtual ~BBSHandler();
	const char * GetName() const;
	void SetName(const char *name);
//////////////////////////////////////////////////////////////////////
//BOard
	virtual status_t LoadFromInet();
	virtual status_t LoadFromLocal();
	void DrawBoardList(BoardListView *owner);
	virtual status_t BoardRequested(BMallocIO &buf)=0;
	virtual void DrawBoardListReuested(BoardListView *owner, BMallocIO &buf)=0;
	void AddBBSItem(BoardOutLineListView *owner, const char *boardname, const char *uri);
	void AddBBSSuperItem(BoardOutLineListView *owner, const char *catname, bool expanded = true);

//Load DAT
	virtual void loadDatfile();

//Preference	
	//virtual PrefView *makePreference();
	//PrefView *PreferenceView(); 
	void WriteExpanded(BoardOutLineListView *owner);
	status_t Expanded(BMessage *archive);

protected:
	status_t defaultReader(BMallocIO &buf, const char *uri, bool compressd = false);
	status_t defaultLocalReader();
	status_t defaultDrawer(BoardListView *owner, const char *buf, size_t size, const char *start, const char *end);
	BMallocIO fBuf;

private:
	BString fBBSname;
	BoardItem *fSuperItem;
//	PrefView *fPrefView;
};
#endif //BBSHANDLER_H_INCLUDED
